#ifndef Matrix_h__
#define Matrix_h__

namespace math
{
	class Matrix
	{
	public:
		union {

			float fM[16];
			struct {
				float xx, yx, zx, wx;
				float xy, yy, zy, wy;
				float xz, yz, zz, wz;
				float xw, yw, zw, ww;
			};
			struct {
				float fM44[4][4];
			};
		};

	public:
		inline Matrix();

		inline Matrix(const float fS[]);
		inline Matrix(const Matrix &mM);
		inline Matrix(
			float fXX, float fXY, float fXZ, float fXW,
			float fYX, float fYY, float fYZ, float fYW,
			float fZX, float fZY, float fZZ, float fZW,
			float fWX, float fWY, float fWZ, float fWW);
	};

}

#endif // Matrix_h__
